﻿using System;
using System.Collections;
using System.Collections.Generic;
using System.IO;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            ///Driveinfo:查看磁盘的空间、磁盘的文件格式、磁盘的卷标///

            DriveInfo driveinfo = new DriveInfo("D");

            Console.WriteLine("驱动器的名称：" + driveinfo.Name);

            Console.WriteLine("驱动器类型：" + driveinfo.DriveType);

            Console.WriteLine("驱动器的文件格式：" + driveinfo.DriveFormat);

            Console.WriteLine("驱动器中可用空间大小：" + driveinfo.TotalFreeSpace);

            Console.WriteLine("驱动器总大小：" + driveinfo.TotalSize);
            ///获取计算机中所有驱动器的名称和文件格式 使用GetDrives 方法获取所有驱动器磁盘///

            DriveInfo[] driveInfo = DriveInfo.GetDrives();

            foreach (DriveInfo drive in driveInfo)
            {
                Console.WriteLine("驱动器名称:" + drive.Name);

                Console.WriteLine("驱动器文件格式:" + drive.DriveFormat);
            }

            ///Directoryinfo 文件夹操作  ////

            //文件夹的创建//

            DirectoryInfo directory = new DirectoryInfo("D:\\mian");

            directory.Create();

            directory.CreateSubdirectory("tiao");

            directory.CreateSubdirectory("xian");


            //创建文件夹时即使磁盘上存在同名文件夹也可以直接创建，不会出现异常。.//

            //查看文件夹

            IEnumerable<DirectoryInfo> direc = directory.EnumerateDirectories();

            foreach (var big in direc)
            {
                Console.WriteLine(big.Name);
            }

            //删除子文件//

            directory.Delete(true);

            //Directory:Directory 类省去了创建类实例的步骤，其他操作也与 Directoryinfo 类似。//

            //先判断是否存在该文件夹，如果存在则删除，否则创建该文件夹//

            bool samll = Directory.Exists("D:\\mian");

            if (samll)
            {
                Directory.Delete("D:\\mian", true);
            }
            else
            {
                Directory.CreateDirectory("D;\\mian");
            }

            //FileInfo   File 类和 FileInfo 类都是用来操作文件的，并且作用相似，它们都能完成对文件的创建、更改文件的名称、删除文件、移动文件等操作。//
            ///  File 类是静态类，其成员也是静态的，通过类名即可访问类的成员；FileInfo 类不是静态成员，其类的成员需要类的实例来访问。//

            //在D盘下创建age文件夹
            Directory.CreateDirectory("D:\\age");

            FileInfo fileinfo = new FileInfo("D:\\age\\test.text");

            if (!fileinfo.Exists)
            {
                //创建子文件文件
                fileinfo.Create().Close();
            }

            fileinfo.Attributes = FileAttributes.Normal;//设置文件属性

            Console.WriteLine("文件路径:" + fileinfo.Directory);

            Console.WriteLine("文件名称:" + fileinfo.Name);

            Console.WriteLine("文件是否只读: " + fileinfo.IsReadOnly);

            Console.WriteLine("文件大小:" + fileinfo.Length);

            //先创建age-1 文件夹
            //将文件移动到age-1文件夹下

            Directory.CreateDirectory("D:\\age-1");

            FileInfo newfilefo = new FileInfo("D:\\age-1\\test.text");

            if (!newfilefo.Exists)
            {
                newfilefo.MoveTo("D;\\age-1\\test.text");
            }

            //File:

            //在D盘下创建apple banana文件夹

            Directory.CreateDirectory("D;\\apple");

            Directory.CreateDirectory("D:\\banana");

            string path = "D:\\apple\\test-1.text";

            //创建文件
            FileStream filestream = File.Create(path);

            //获取文件信息

            Console.WriteLine("文件创建时间:" + File.GetCreationTime(path));

            Console.WriteLine("文件最后创建时间:" + File.GetLastWriteTime(path));

            //关闭文件流
            filestream.Close();

            //设置目标路径

            string newPath = "D;\\banana\\test-1.text";

            bool fish = File.Exists(newPath);

            if (fish)
            {
                //删除文件
                File.Delete(newPath);
            }
            File.Move(path, newPath);


            //  Path:Path 类主要用于文件路径的一些操作，它也是一个静态类。

            Console.WriteLine("请输入一个文件的路径:");

            string name = Console.ReadLine();

            Console.WriteLine("不包含扩展名的文件名" + Path.GetFileNameWithoutExtension(name));

            Console.WriteLine("文件扩展名:" + Path.GetExtension(name));

            Console.WriteLine("文件全名;" + Path.GetFileName(name));

            Console.WriteLine("文件路径:" + Path.GetDirectoryName(name));

            //更改文件扩展名

            string newName = Path.ChangeExtension(name, "abc");

            Console.WriteLine("更改后的文件全名:"+Path.GetFileName(newName));







        }
    }
}
